#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
	功能：根据时间搜索聊天双方的聊天记录
	参数：
		sockefd:请求者连接描述符；
		id1：客服id 
		id2：客户id
		time：要限定的时间 （格式：Aug(空格)(空格)2）搜索8月2号的聊天记录
			如果为NULL，则发回所有聊天记录
	返回值：无    
	注：发回socketfd字符串格式：search (聊天记录)
					没有聊天记录：search chat history is not exist！
	作者：ljj	
	时间：2020/8/3
*/
void search_chat_history_by_time(int socketfd, char *id1, char *id2, char *time){

	//id1和id2的聊天记录文件名
	char filename[16] = {'\0'};
	strcat(filename, id1);
	strcat(filename, id2);
	//id1和id2的聊天记录文件路径
	char filePath[64] = {'\0'};
	strcat(filePath, "../service/");
	strcat(filePath, id1);
	strcat(filePath, "/");
	strcat(filePath, filename);
	char buf[256] = {'\0'};
	char buff[4096] = {'\0'};
	//带上命令解析标识头
	strcat(buff, "search ");
	//打开聊天记录文件
	// printf("%s\n", filePath);
	FILE *fp = fopen(filePath, "r");
	if (fp == NULL) {
		strcat(buff, "chat history is not exist");
		//发送给请求者*****************************************socketfd
		Write(socketfd, buff, strlen(buff));
		// printf("%s\n", buff);
		return;
	}
	//聊天记录时间匹配
	if (time == NULL) {
		//时间不限，返回所有聊天记录
		while (fgets(buf, sizeof(buf), fp) != NULL) {
			strcat(buff, buf);
		}
	} else {
		//限定搜索时间
		while (fgets(buf, sizeof(buf), fp) != NULL) {
			//找到和时间匹配的那一行
			if (strstr(buf, time)) {
				//将后面的消息保存到buff
				strcat(buff, buf);
				while (fgets(buf, sizeof(buf), fp) != NULL) {
					strcat(buff, buf);
				}
				break;
			}
		}	
	}
	//printf("%s\n", buff);
	//发送给请求者*******************************socketfd
	Write(socketfd, buff, strlen(buff));
	fclose(fp);
}
/*
int main() {

	search_chat_history_by_time(1, 201, 202, "Aug  3");

	return 0;
}
*/
